1 : <?php
2 :
3 : /*--------------------------------------------------------------------------+
4 : This file is part of eStudy
5 : externaltools/classes/class.chatinfo.inc.php
6 : - Modulgruppe: ExternalTools
7 : - Beschreibung: In dieser Datei ist die Klasse ChatInfo implementiert.
8 : - Version: 1.1 02-07-07
9 : - Autor(en): AJAX-Team
10 : +---------------------------------------------------------------------------+
11 : This program is free software; you can redistribute it and/or
12 : modify it under the terms of the GNU General Public License
13 : as published by the Free Software Foundation; either version 2
14 : of the License, or any later version.
15 : +---------------------------------------------------------------------------+
16 : This program is distributed in the hope that it will be useful,
17 : but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : GNU General Public License for more details.
20 : You should have received a copy of the GNU General Public License
21 : along with this program; if not, write to the Free Software
22 : Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 : +--------------------------------------------------------------------------*/
24 :
25 : /**
26 : * Die Basisklasse
27 : */
28 1 : require_once ("class.toolinfo.inc.php");
29 :
30 : /**
31 : * Klasse zum Anlegen eines neuen Adresseintrages im Profil
32 : */
33 1 : require_once ("class.editcontact.inc.php");
34 :
35 : /**
36 : * ToolInfo Klasse für Chat
37 : * @package eStudy.ExternalTools
38 : * @version 1.1, 02-07-07
39 : * @author AJAX-Team
40 : */
41 1 : class ChatInfo extends ToolInfo {
42 :
43 : private $result = '';
44 :
45 :
46 : /**
47 : * Erzeugt ein neues ChatInfo Objekt.
48 : * @param integer $id - die Tool ID
49 : * @param string $image - das Icon, das angezeigt werden soll.
50 : */
51 : public function ChatInfo($id, $image = null) {
52 0 : parent :: ToolInfo($image);
53 0 : $this->toolName = 'Chat';
54 0 : $this->toolID = $id;
55 0 : }
56 :
57 :
58 : /**
59 : * Aktualisiert die Jabber Benutzerdaten, nachdem der
60 : * eStudy-Benutzer innerhalb von eStudy seine Logindaten geändert hat.
61 : *
62 : * Parameter siehe http://www.igniterealtime.org/projects/openfire/plugins/userservice/readme.html
63 : *
64 : * @access public
65 : * @param String $oldLogin - Der alte Loginname des Benutzers.
66 : * @param String $newLogin - Der neue Loginname des Benutzers.
67 : * @param String $password - Das Passwort des Benutzers.
68 : * @return bool - <i>true</i> wenn alles geklappt hat.
69 : */
70 : public function updateLogin($oldLogin, $newLogin, $password) {
71 0 : global $settings;
72 0 : $bool = false;
73 :
74 : // Jabber deaktiviert
75 0 : if(!$settings['jabber_use_jabber'])
76 0 : return false;
77 :
78 : // Parameter für das updaten eines vorhandenen Nutzers
79 0 : $paramArray['type'] = 'update';
80 0 : $paramArray['secret'] = $settings['jabber_secret'];
81 0 : $paramArray['password'] = $password;
82 0 : $paramArray['name'] = $_SESSION['Vorname'] . ' ' . $_SESSION['Nachname'];
83 0 : $paramArray['username'] = $newLogin;
84 :
85 0 : $this->connectUserService($paramArray);
86 :
87 : /*
88 : * <result>ok</result> = Operation hat funktioniert (d'oh)
89 : * <error>UserNotFoundException</error> = User existiert noch nicht => anlegen
90 : */
91 0 : switch(trim($this->result)) {
92 0 : case '<result>ok</result>':
93 0 : $bool = true;
94 0 : break;
95 0 : case '<error>UserNotFoundException</error>':
96 0 : $bool = $this->createNewUser($newLogin, $password);
97 0 : break;
98 0 : }
99 :
100 : // Boolean
101 0 : return $bool;
102 : }
103 :
104 :
105 : /**
106 : * Erstellt einen Nutzer in OpenFire
107 : *
108 : * Parameter siehe http://www.igniterealtime.org/projects/openfire/plugins/userservice/readme.html
109 : *
110 : * @access public
111 : * @param String $login - Loginname des Benutzers
112 : * @param String $password - Das Passwort des Benutzers.
113 : * @return bool - <i>true</i> wenn alles geklappt hat.
114 : */
115 : public function createNewUser($login, $password) {
116 0 : global $settings;
117 0 : $bool = false;
118 :
119 : // Jabber deaktiviert
120 0 : if(!$settings['jabber_use_jabber'])
121 0 : return false;
122 :
123 : // Parameter für das hinzufügen eines neuen Nutzers
124 0 : $paramArray['type'] = 'add';
125 0 : $paramArray['secret'] = $settings['jabber_secret'];
126 0 : $paramArray['username'] = $login;
127 0 : $paramArray['password'] = $password;
128 0 : $paramArray['name'] = $_SESSION['Vorname'] . ' ' . $_SESSION['Nachname'];
129 :
130 0 : $this->connectUserService($paramArray);
131 :
132 : /*
133 : * <result>ok</result> = Operation hat funktioniert (d'oh)
134 : * <error>UserAlreadyExistsException</error> = User existiert bereits
135 : */
136 0 : switch(trim($this->result)) {
137 0 : case '<result>ok</result>':
138 0 : $bool = true;
139 0 : break;
140 0 : case '<error>UserAlreadyExistsException</error>':
141 0 : $bool = false;
142 0 : break;
143 0 : }
144 :
145 : /*
146 : * Neue Jabber-Adresse ins Profil-Adressbuch eintragen
147 : */
148 0 : if($bool) {
149 0 : $newAdress = new EditContact($_SESSION['userid'], -1);
150 0 : $newAdress->newContact['contacttypeID'] = 9; // 9 == Jabber
151 0 : $newAdress->newContact['value'] = $login . $this->getJID();
152 0 : $newAdress->newContact['showFlag'] = 0; // 0 == nicht anzeigen
153 0 : $newAdress->newContact['userID'] = $newAdress->userID;
154 0 : $newAdress->newContact['contactID'] = 0;
155 0 : $val = $newAdress->addContact();
156 0 : }
157 :
158 0 : return $bool;
159 : }
160 :
161 :
162 : /**
163 : * Führt einen URL Connect auf die übergebene URL durch
164 : * @access private
165 : * @param Array $paramArray - URL Parameter
166 : * @return bool
167 : */
168 : private function connectUserService($paramArray) {
169 0 : global $settings;
170 0 : $param = '';
171 0 : $i = 0;
172 :
173 0 : if (!function_exists("curl_init"))
174 0 : return false;
175 :
176 : // Aus dem Array die URL Parameter zusammenbauen
177 0 : while(list($key, $val) = each($paramArray)) {
178 0 : if(!empty($val)) {
179 0 : if($i == 0)
180 0 : $param .= '?' . $key . '=' . urlencode(utf8_encode($val));
181 : else
182 0 : $param .= '&' . $key . '=' . urlencode(utf8_encode($val));
183 0 : }
184 :
185 0 : $i++;
186 0 : }
187 :
188 0 : $url = curl_init('http://' . $settings['jabber_server'] . '/plugins/userService/userservice' . $param);
189 :
190 0 : curl_setopt($url, CURLOPT_RETURNTRANSFER, 1);
191 0 : curl_setopt($url, CURLOPT_TIMEOUT, 120);
192 0 : curl_setopt($url, CURLOPT_CONNECTTIMEOUT, 10);
193 0 : $this->result = curl_exec($url);
194 0 : curl_close($url);
195 :
196 0 : if ($this->result)
197 0 : return true;
198 : else
199 0 : return false;
200 :
201 : }
202 :
203 :
204 : /**
205 : * JID aus der Jabber Server URL extrahieren
206 : *
207 : * @access public
208 : * @return String
209 : */
210 : public function getJID() {
211 0 : global $settings;
212 :
213 0 : if(isset($settings['jabber_server']) && $settings['jabber_server'] != '')
214 0 : {
215 0 : $portpos = strpos($settings['jabber_server'], ":");
216 0 : if ($portpos === false )
217 0 : $domain = $settings['jabber_server'];
218 : else
219 0 : $domain = substr($settings['jabber_server'], 0, $portpos);
220 0 : return '@' . $domain;
221 : }
222 : else
223 0 : return false;
224 : }
225 :
226 : }
227 : ?>
|